/**
 * 微信工具类
 * @author hejiacheng
 * @date 2021-12-3
 */

import storageUtil from '@/utils/storageUtil.js'
import toastUtil from '@/utils/toastUtil.js'
import userUtil from '../user/userUtil.js'
import {
	findConfigApi,
	addConfigApi,
	updateConfigApi,
	updateUnitApi
} from '../../api/configApi.js'

let configUtil = {}


/**
 * 初始化用户
 */
configUtil.initConfig = function() {
	console.log("initConfig......")
	// 先查询openId
	userUtil.getOpenId().then(() => {
		// 获取数据库中的配置
		configUtil.getConfig().then((res) => {
			console.log('查询配置信息 : ', res)
			// 不存在配置 新增配置
			if (!res) {
				// 新增配置
				addConfig()
			}
		}, (res) => {
			console.log('fail res : ', res)
			toastUtil.showToast("查找配置信息失败!")
		})
	})
}

/**
 * 获取数据库配置
 */
configUtil.getConfig = function(successCallBack) {
	console.log("getConfig......")
	return new Promise(function(resolve, reject) {
		let form = {
			openId: storageUtil.getOpenId()
		}
		// 查找用户
		findConfigApi(form).then((res) => {
			console.log('查询配置信息 : ', res)
			// 不存在用户 初始化问题
			if (!res) {
				// 不存在用户 返回null
				resolve && resolve(null)
			} else {
				// 存在用户，缓存用户
				storageUtil.setConfig(res)
				resolve && resolve(res)
			}
		}, (res) => {
			console.log('fail res : ', res)
			toastUtil.showToast("查找用户配置信息失败!")
			reject && reject(res)
		})

	})
}

/**
 * 更新配置
 */
configUtil.updateConfig = function(data) {
	console.log("updateConfig......")
	return new Promise(function(resolve, reject) {
		updateConfigApi(data).then((res) => {
			resolve && resolve(res)
		}, (res) => {
			reject && reject(res)
		})
	})
}

// 添加配置
function addConfig() {
	console.log("addConfig......")
	return new Promise(function(resolve, reject) {
		addConfigApi({
			openId: storageUtil.getOpenId(),
			unit: '公斤'
		}).then((res) => {
			console.log('添加配置信息 : ', res)
			// 重新查询一次用户信息
			configUtil.initUser()
		}, (res) => {
			console.log('fail res : ', res)
			toastUtil.showToast('用户配置存储失败!')
		})
	})
}

export default configUtil